package com.neuedu.corejava.ch4;

import javax.swing.text.StyledEditorKit.ForegroundAction;

public class Array2 {

	public static void main(String[] args) {
		// 二维数组
		// 设计一个二维数组，保存班级同学的座位信息
		// String sits[][] = new String[][];错误，必须指定行
		String sits[][] = new String[10][];

		// 锯齿数组：java没有严格意义的二维数组，而是指代数组的数据
		// 二维数组的第二维度可以是不相等，理解为列数可以不相等，称为锯齿数组
		sits[0] = new String[6]; // 第一行有6列
		sits[1] = new String[3];
		sits[2] = new String[9];

		sits[0][0] = "陆家学";
		sits[0][1] = "陆家学1";
		sits[0][2] = "陆家学2";
		sits[0][3] = "陆家学3";

		sits[1][0] = "陆家学4";
		sits[1][1] = "陆家学5";
		sits[1][2] = "陆家学6";

		System.out.println(sits.length);// 使用数组名.length获取的数组长度是第一维度的长度；二维数组的第一长度是相同的
		// 使用二重循环遍历二维数组
		for (int i = 0; i < sits.length; i++) { // 先遍历出第一维度，行
			if (sits[i] != null) {
				for (int j = 0; j < sits[i].length; j++) {// 在遍历出每一列的数据，注意每一行的列数可能不一样
					System.out.print(sits[i][j] + "\t");
				}
			} else {
				System.out.println("第" + (i + 1) + "行没有数据");
			}
		}

		// 二维数组的其他定义方法：
		String[] sits2[] = new String[10][6];
		String[][] sits3 = new String[10][6];
		String sits4[][] = new String[10][6];

		// String[] sits5[] = new String[10][6]{{""},{}};
		String[] sits5[] = new String[][] { { "", "", "" }, { "", "" } };// 直接赋值时不能指定行数和列数
		String[] sits6[] = { { "", "" }, { "", "" } };

		for (String[] row : sits) {
			if (row != null) {
				for (String name : row) {
					System.out.print(name + "\t");
				}
				System.out.println();
			} else {
				System.out.println("改行数据为null");
			}
		}
	}
}
